PouchDB এর সাথে Custom Events তৈরি করা

PouchDB এর জন্য ইভেন্ট হ্যান্ডলিং - পাউচডিবি (PouchDB) - Database Tutorials

348

PouchDB একটি ক্লায়েন্ট-সাইড ডাটাবেস যা ডেটা সিঙ্ক্রোনাইজেশন সমর্থন করে। এর সাহায্যে আপনি ব্রাউজারে লোকাল ডাটাবেস তৈরি এবং পরিচালনা করতে পারেন, এবং সার্ভারের সাথে ডেটা সিঙ্ক্রোনাইজ করতে পারেন। PouchDB ইভেন্টগুলির মাধ্যমে বিভিন্ন অ্যাকশন ট্র্যাক করা যায়, তবে কখনও কখনও আপনাকে কাস্টম ইভেন্ট তৈরি করতে হতে পারে যা বিশেষ কিছু অ্যাকশন বা প্রক্রিয়া ট্রিগার করবে। এই টিউটোরিয়ালে আমরা দেখব কীভাবে PouchDB এর সাথে কাস্টম ইভেন্ট তৈরি করা যায়।


কাস্টম ইভেন্টের ধারণা

PouchDB এর ইভেন্ট সিস্টেম মূলত ডাটাবেসের পরিবর্তন, সিঙ্ক্রোনাইজেশন, এবং অন্যান্য অপারেশনগুলির ওপর ভিত্তি করে। তবে, কখনও কখনও আপনি নিজস্ব কাস্টম ইভেন্ট তৈরি করতে চাইতে পারেন যা আপনার অ্যাপ্লিকেশন লজিকের সাথে সম্পর্কিত। কাস্টম ইভেন্ট তৈরি করতে হলে, আপনি JavaScript ইভেন্ট সিস্টেম ব্যবহার করতে পারেন যা DOM ইভেন্টগুলির মতোই কাজ করে।


কাস্টম ইভেন্ট তৈরি করার ধাপ

  1. EventEmitter তৈরি করুন: প্রথমে আপনাকে একটি EventEmitter তৈরি করতে হবে, যেটি কাস্টম ইভেন্টগুলিকে ট্র্যাক করবে এবং যথাসময়ে সেগুলির জন্য লিসেনারদের কল করবে।
  2. PouchDB ইভেন্টে কাস্টম ইভেন্ট ট্রিগার করা: PouchDB এর ডাটাবেস অপারেশন বা সিঙ্ক্রোনাইজেশন প্রক্রিয়ার পর কাস্টম ইভেন্ট ট্রিগার করার জন্য আপনি কাস্টম ইভেন্ট ব্যবহার করবেন।

উদাহরণ: কাস্টম ইভেন্ট তৈরি করা

ধরা যাক, আমরা একটি পজিটিভ addDocument কাস্টম ইভেন্ট তৈরি করবো যেটি একটি ডকুমেন্ট সফলভাবে ডাটাবেসে যোগ করার পর ট্রিগার হবে।

1. EventEmitter তৈরি করা

প্রথমে একটি EventEmitter ক্লাস তৈরি করুন, যা ইভেন্টগুলি ট্রিগার এবং লিসেন করবে।

class EventEmitter {
    constructor() {
        this.events = {};
    }

    on(event, listener) {
        if (!this.events[event]) {
            this.events[event] = [];
        }
        this.events[event].push(listener);
    }

    emit(event, ...args) {
        if (this.events[event]) {
            this.events[event].forEach(listener => listener(...args));
        }
    }
}

2. PouchDB ইনস্ট্যান্স তৈরি করা

এখন PouchDB ডাটাবেস তৈরি করুন এবং কাস্টম ইভেন্টে ট্রিগার করার জন্য সঠিক পদ্ধতি ব্যবহার করুন।

// PouchDB ডাটাবেস তৈরি
const db = new PouchDB('my_database');

// কাস্টম ইভেন্ট তৈরি
const eventEmitter = new EventEmitter();

// ডকুমেন্ট যোগ করার পর কাস্টম ইভেন্ট ট্রিগার করা
async function addDocument(doc) {
    try {
        const result = await db.put(doc);
        
        // ডকুমেন্ট সফলভাবে যোগ করা হলে কাস্টম ইভেন্ট ট্রিগার হবে
        eventEmitter.emit('addDocument', result);
        console.log('Document added:', result);
    } catch (error) {
        console.error('Error adding document:', error);
    }
}

// কাস্টম ইভেন্টে লিসেনার যোগ করা
eventEmitter.on('addDocument', (result) => {
    console.log('Custom Event Triggered: Document added successfully!', result);
});

3. ডকুমেন্ট যোগ করা

এখন addDocument ফাংশনটি ব্যবহার করে একটি ডকুমেন্ট ডাটাবেসে যোগ করুন, এবং কাস্টম ইভেন্ট ট্রিগার হবে।

const doc = {
    _id: 'unique_doc_id',
    title: 'My First Document',
    content: 'This is a test document.'
};

addDocument(doc);

এই উদাহরণে, যখন একটি ডকুমেন্ট সফলভাবে ডাটাবেসে যোগ করা হবে, তখন addDocument কাস্টম ইভেন্ট ট্রিগার হবে এবং সেই ইভেন্টের জন্য লিসেনারটি কল হবে।


কাস্টম ইভেন্ট ব্যবহার করে অন্যান্য ফিচার

  1. সিঙ্ক্রোনাইজেশন ইভেন্ট: আপনি PouchDB এর সিঙ্ক্রোনাইজেশন ইভেন্টের সাথে কাস্টম ইভেন্ট ট্রিগার করতে পারেন। যেমন, যখন একটি সিঙ্ক্রোনাইজেশন সফল হবে বা ফেইল করবে, তখন আপনি কাস্টম ইভেন্ট ট্রিগার করতে পারেন।
const remoteDB = new PouchDB('http://localhost:5984/my_database');

db.sync(remoteDB, {
    live: true,
    retry: true
}).on('change', (change) => {
    // সিঙ্ক্রোনাইজেশন পরিবর্তন হলে কাস্টম ইভেন্ট ট্রিগার করুন
    eventEmitter.emit('syncChange', change);
});

eventEmitter.on('syncChange', (change) => {
    console.log('Sync Event Triggered:', change);
});
  1. ডকুমেন্ট আপডেট ইভেন্ট: ডকুমেন্টের আপডেট হলে কাস্টম ইভেন্ট ট্রিগার করা।
async function updateDocument(doc) {
    try {
        const result = await db.put(doc);
        
        // ডকুমেন্ট আপডেট হলে কাস্টম ইভেন্ট ট্রিগার হবে
        eventEmitter.emit('updateDocument', result);
        console.log('Document updated:', result);
    } catch (error) {
        console.error('Error updating document:', error);
    }
}

eventEmitter.on('updateDocument', (result) => {
    console.log('Custom Event Triggered: Document updated successfully!', result);
});

সারাংশ

PouchDB এর সাথে কাস্টম ইভেন্ট তৈরি করা একটি শক্তিশালী কৌশল যা আপনার অ্যাপ্লিকেশনকে আরও কার্যকর এবং প্রতিক্রিয়া যোগ্য করে তোলে। JavaScript এর EventEmitter ব্যবহারের মাধ্যমে আপনি আপনার প্রক্রিয়ার মধ্যে কাস্টম ইভেন্ট ট্র্যাক করতে পারবেন এবং বিভিন্ন ইভেন্টে প্রতিক্রিয়া জানাতে পারবেন। এর মাধ্যমে ডেটাবেসের পরিবর্তন, সিঙ্ক্রোনাইজেশন এবং অন্যান্য প্রক্রিয়াগুলির উপর নজর রাখা আরও সহজ হয়।

Content added By
Promotion

Are you sure to start over?

Loading...